package co.com.bas.logica.poliza;

import java.io.*;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import co.com.bas.modelo.BsFacMvtoSeguros;
import co.com.bas.modelo.BsLogAuditoria;
import co.com.bas.persistencia.BsFacMvtoSegurosDAO;
import co.com.bas.persistencia.BsLogAuditoriaDAO;
import co.com.bas.persistencia.EntityManagerHelper;
import co.com.bas.persistencia.ManualBsFacMvtoSegurosDAO;
import co.com.bas.persistencia.ManualIBsFacMvtoSegurosDAO;
import co.com.bas.util.GetLocalIP;

public class ArchivoLeer {

	public void leea(String ruta) {
		try {
			File f = new File(ruta);
			FileInputStream f1 = new FileInputStream(f);
			InputStreamReader f2 = new InputStreamReader(f1);
			BufferedReader linea = new BufferedReader(f2);

			FileWriter fichero = null;
			PrintWriter pw = null;
			fichero = new FileWriter(
					"C:\\Geniar\\BancaSeguros\\cardifNoEncontrados.txt");
			pw = new PrintWriter(fichero);
			pw.println("Tipo Documento\t\tDocumento\t\tCertificado\t\tNovedad");

			// BufferedReader linea=new BufferedReader(new InputStreamReader(new
			// FileInputStream(new File("D:\\gremlin\\texto.txt"))));

			String linea_arch;// = linea.readLine();

			/*
			 * System.out.println(linea_arch);
			 */
			ManualIBsFacMvtoSegurosDAO mbfmsDAO = new ManualBsFacMvtoSegurosDAO();
			BsFacMvtoSeguros bfms = null;
			List<BsFacMvtoSeguros> listbfms = new ArrayList<BsFacMvtoSeguros>();
			while ((linea_arch = linea.readLine()) != null) {
				String certificado = linea_arch.substring(26, 36).trim();
				String tipoDocumento = linea_arch.substring(52, 54).trim();
				String documento = linea_arch.substring(54, 74).trim();
				String novedad = linea_arch.substring(282, 302).trim();
				try {
					bfms = new BsFacMvtoSeguros();
					bfms = mbfmsDAO.findBsFacMvtoSeguros(new Integer(
							tipoDocumento), new Long(documento), new Integer(
							certificado));
					if (bfms.getCdAsociado() != null
							|| bfms.getCdAsociado() != new Integer(0)) {
						bfms.setValorNovedad(new Long(novedad));
						listbfms.add(bfms);
					}
				} catch (Exception e) {
					// TODO: handle exception
					try {
						pw.println(tipoDocumento + "\t\t\t" + documento
								+ "\t\t" + certificado + "\t\t" + novedad);
					} catch (Exception ex) {
						// TODO: handle exception
					}
				}
			}

			linea.close();
			fichero.close();

			try {
				BsLogAuditoria bla = null;
				BsFacMvtoSegurosDAO bfmsDAO = new BsFacMvtoSegurosDAO();
				BsLogAuditoriaDAO blaDAO = new BsLogAuditoriaDAO();
				BsFacMvtoSeguros updateMovimiento;
				GetLocalIP miIP = new GetLocalIP();
				EntityManagerHelper.getEntityManager().getTransaction().begin();
				EntityManagerHelper.getEntityManager().flush();

				for (BsFacMvtoSeguros bsFacMvtoSeguros : listbfms) {
					bsFacMvtoSeguros.setFechaActualizacion(new Date());
					updateMovimiento = new BsFacMvtoSeguros();
					updateMovimiento = bsFacMvtoSeguros;
					bfmsDAO.update(updateMovimiento);

					bla = new BsLogAuditoria();
					bla.setCdDatosAsegurado(updateMovimiento
							.getCdDatosAsegurado());
					bla.setCdAsociado(updateMovimiento.getCdAsociado());
					bla.setCdTipoDocumento(new Integer(2));
					bla.setValorPrimaNeta(updateMovimiento.getValorPrimaNeta());
					bla.setValorIva(updateMovimiento.getValorIva());
					bla.setValorTotalPrima(updateMovimiento
							.getValorTotalPrima());
					bla.setValorNovedad(updateMovimiento.getValorNovedad());
					bla.setUsuario("DNXAPR02");
					bla.setFechaActualizacion(null);
					bla.setEquipo(miIP.obtenerIP());
					blaDAO.save(bla);
				}
				EntityManagerHelper.getEntityManager().getTransaction()
						.commit();

			} catch (Exception e) {
				// TODO: handle exception
				EntityManagerHelper.getEntityManager().getTransaction()
						.rollback();
			}
		} catch (IOException e) {
		}
	}
}